/** ITG sensor code
 *
 * This file contains code to handle the ITG sensor connected via TWI
*/
//##############################################################################




/** TWI master mode */
#include "LR_twimaster.h"
//##############################################################################




/** Define ITG address */
#define ADDRESS 0x68 //0x69
//##############################################################################




/** Init the ITG sensor */
signed char itg_init( void )
{
  static char const dlpf_fs = 0x18;
  static char const pwr_mgm = 0x01;

  if (LR_twimaster_send( ADDRESS, 0x16, 1, (void *)&dlpf_fs, 1 ) &&
      LR_twimaster_send( ADDRESS, 0x3E, 1, (void *)&pwr_mgm, 1 ))
  {
    return 1;
  }
  return 0;
}
//------------------------------------------------------------------------------




/** Read the sensor values */
void itg_read( short * x, short * y, short * z )
{
  char raw[6];
  LR_twimaster_read( ADDRESS, 0x1D, 1, raw, 6 ); // TODO possible to read all?
  *x = (raw[0] << 8) | raw[1];
  *y = (raw[2] << 8) | raw[3];
  *z = (raw[4] << 8) | raw[5];
  // TODO correct byte order?
}
//##############################################################################




